fix: Clean up sessions from manager when terminated via DELETE request #791
+121
−4
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR fixes a memory leak issue in
StreamableHTTPSessionManager
where sessions were not being cleaned up from the manager's internal dictionary when terminated via DELETE requests.Problem
Previously, when clients sent DELETE requests to terminate sessions:
StreamableHTTPServerTransport
would mark itself as terminatedStreamableHTTPSessionManager
would continue to hold references to these terminated sessions in its_server_instances
dictionarySolution
Added a callback mechanism to properly clean up terminated sessions:
StreamableHTTPServerTransport
constructor (on_session_terminated
)StreamableHTTPSessionManager
(_on_session_terminated
)Technical Details
StreamableHTTPServerTransport._terminate_session()
now calls the callbackStreamableHTTPSessionManager._server_instances
Test Plan
test_session_cleanup_on_delete_request
Backward Compatibility
✅ This change is fully backward compatible - no breaking changes to existing APIs.
Generated with Claude Code